/**
 *******************************************************************************
 * @file main.h
 * @author .ISS_AUTO (hudandan@issauto.com)
 * @date 2024-05-15  1. Base Version;
 *       2024-09-04  1. Version 0.1.0;
 *       2024-11-19  1. Version 0.2.0;
 *
 * @brief  This file for main.h specification.
 *
 * @copyright Copyright (c) 2024 ISSAUTO TECH Co., Ltd. All rights reserved.
 *
 *******************************************************************************
 */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __MAIN_H
#define __MAIN_H

#ifdef __cplusplus
extern "C" {
#endif


/* Private includes ----------------------------------------------------------*/
#include "app_config.h"
#include "system_init.h"

/* Exported types ------------------------------------------------------------*/
typedef struct _iss_sTask_t {
    void (*sTask_Handler)(void *arg); //!< Handler function

} iss_sTask_t;

/*!< The list of task IDs. */
typedef enum {
    TASK_ID_APP = 0U,
    TASK_ID_CLI,

    TASK_ID_MAX_NUM,
} TM_TaskId_t;

/* Exported constants --------------------------------------------------------*/
#define sTASK_ENABLE     1
#define sTASK_DISABLE    0

/* Exported macro ------------------------------------------------------------*/
/* Private defines -----------------------------------------------------------*/
/* Exported variables --------------------------------------------------------*/
/* Exported functions prototypes ---------------------------------------------*/
void sTask_Inactive(uint16_t taskId);
void sTask_Active(uint16_t taskId);
uint16_t Is_sTask_active(uint16_t taskId);

void SysTick_TimerCallback(void);

#ifdef __cplusplus
}
#endif

#endif /* __MAIN_H */
